The present invention relates to the field of computer graphics, and in particular to methods and apparatus for creating computer generated images and animations. Many computer graphic images are created by mathematically modeling the interaction of light with a three dimensional scene from a given viewpoint. This process, called rendering, generates a two-dimensional image of the scene from the given viewpoint, and is analogous to taking a photograph of a real-world scene. Animated sequences can be created by rendering a sequence of images of a scene as the scene is gradually changed over time.
A great deal of effort has been devoted to making realistic looking rendered images and animations. Rendering can include processing scenes with thousands of different objects, applying sophisticated lighting, shading, texturing, and animation algorithms; simulating physical phenomena; and performing intensive image processing calculations. Because of this, rendering realistic looking images typically is a computationally intensive task. Furthermore, as even one minute of animation typically requires thousands of rendered images, animators require large amounts of computing capacity to quickly and efficiently create animation.
A renderfarm is one solution for providing animators with large amounts of computing capacity. A renderfarm is a set of computers adapted to perform a large number of rendering or rendering-related tasks in parallel. In some implementations, a renderfarm is a cluster computing system comprising thousands or tens of thousands of server computers networked together. Each server computer can have its own memory and storage as well as access to shared memory and/or storage. Server computers can be general-purpose computers or computers including components specifically adapted to rendering and rendering-related tasks.
Many renderfarms use a distributed scheduling system, such as Pixar's Alfred, to manage the resources of the renderfarm. The distributed scheduling system typically uses a large number of independent dispatcher units to schedule user requests for renderfarm resources. The distributed scheduling system enables an animation studio with hundreds or thousands of animators to efficiently schedule a large number of complicated and often interdependent tasks to be processed by the renderfarm. Because of its distributed nature, the distributed scheduling system is highly scalable and robust.
Unfortunately, because the information on tasks is spread over numerous different dispatcher units, it is often difficult for system administrators to collect aggregate information on renderfarm usage. Furthermore, some renderfarm usage information, such as dependencies between different tasks, is unavailable to system administrators. The renderfarm usage information that is available to system administrators is often stored in log files and other data formats that make querying and analyzing renderfarm information difficult and time-consuming. As some renderfarm usage information is unavailable or difficult to obtain using a distributed scheduling system, some administrative tasks such as spotting and recovering from errors is time-consuming. Additionally, incomplete renderfarm usage information makes it difficult to prioritize tasks to maximize the efficiency of the renderfarm.
It is therefore desirable for a system and method to provide renderfarm users and administrators with more comprehensive renderfarm usage information. It is also desirable for the system and method to interface efficiently with the distributed scheduling system of a renderfarm and without risking disruptions to renderfarm activities. Furthermore, it is desirable for the system and method to enable quick and efficient querying and analysis of renderfarm information. It is also desirable for the system and method to help the distributed scheduling system to prioritize renderfarm tasks to maximize the efficiency of the renderfarm.